<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Annuaire genealogique associatif: Référence de la classe tp3::ArbreAVL&lt; TypeCle, TypeValeur &gt; (modèle)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Généré par Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Annuaire genealogique associatif&#160;<span id="projectnumber">1.0</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Page&#160;principale</span></a></li>
      <li><a href="namespaces.html"><span>Espaces&#160;de&#160;nommage</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Fichiers</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Liste&#160;des&#160;classes</span></a></li>
      <li><a href="functions.html"><span>Membres&#160;de&#160;classe</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('classtp3_1_1_arbre_a_v_l.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Fonctions membres publiques</a> &#124;
<a href="#pri-methods">Fonctions membres privées</a> &#124;
<a href="#pri-attribs">Attributs privés</a>  </div>
  <div class="headertitle">
<div class="title">Référence de la classe tp3::ArbreAVL&lt; TypeCle, TypeValeur &gt; (modèle)</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="tp3::ArbreAVL" -->
<p>classe générique représentant un arbre associatif.  
 <a href="classtp3_1_1_arbre_a_v_l.html#details">Plus de détails...</a></p>

<p><code>#include &lt;ArbreAVL.h&gt;</code></p>
<div class="dynheader">
Graphe de collaboration de tp3::ArbreAVL&lt; TypeCle, TypeValeur &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classtp3_1_1_arbre_a_v_l__coll__graph.png" border="0" usemap="#tp3_1_1_arbre_a_v_l_3_01_type_cle_00_01_type_valeur_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="tp3_1_1_arbre_a_v_l_3_01_type_cle_00_01_type_valeur_01_4_coll__map" id="tp3_1_1_arbre_a_v_l_3_01_type_cle_00_01_type_valeur_01_4_coll__map">
<area shape="rect" id="node2" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html" title="classe interne représentant un noeud typique de l&#39;arbre associatif La classe représente un noeud typi..." alt="" coords="5,7,299,33"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">légende</a>]</span></center></div>

<p><a href="classtp3_1_1_arbre_a_v_l-members.html">Liste de tous les membres</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">classe interne représentant un noeud typique de l'arbre associatif La classe représente un noeud typique pour implémenter un arbre par chaînage.  <a href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html#details">Plus de détails...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Fonctions membres publiques</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#ae284e553075b6363860686f6d971b92f">ArbreAVL</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructeur.  <a href="#ae284e553075b6363860686f6d971b92f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a6f63c44480520259676675af7594dd4b">ArbreAVL</a> (const <a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;p_source)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructeur de copie.  <a href="#a6f63c44480520259676675af7594dd4b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#af63868c5bd825dbb76a5d7bd042b79a5">~ArbreAVL</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructeur.  <a href="#af63868c5bd825dbb76a5d7bd042b79a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a32cd81896cc87f264fb6afa6e1c419a1">operator=</a> (const <a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;p_arbre)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Surcharger l'opérateur =.  <a href="#a32cd81896cc87f264fb6afa6e1c419a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#af51d214bf237296f7bbc63c350043e7f">operator==</a> (const <a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;p_arbre) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Surcharger l'opérateur ==.  <a href="#af51d214bf237296f7bbc63c350043e7f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#af606b3bae77f6b93138cba8e01be06d2">estVide</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Vérifier si l'arbre est vide.  <a href="#af606b3bae77f6b93138cba8e01be06d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a50dccae66eff74985f0be2a0345420c7">taille</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Retourner le nombre d'éléments dans l'arbre.  <a href="#a50dccae66eff74985f0be2a0345420c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a665bab623b63e45d2aa27ce8db2ac616">hauteur</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Retourner la m_hauteur de l'arbre La détermination de la m_hauteur se fait par parcours de l'arbre.  <a href="#a665bab623b63e45d2aa27ce8db2ac616"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a411ad2ea79b5437c5604ddb38ffefa23">appartient</a> (const TypeCle &amp;) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Vérifier si un élément est dans l'arbre.  <a href="#a411ad2ea79b5437c5604ddb38ffefa23"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::pair&lt; TypeCle, TypeValeur &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#af19c791ce8a8504986f05cdee73e0428">parent</a> (const TypeCle &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Retourner le parent d'un élément dans l'arbre.  <a href="#af19c791ce8a8504986f05cdee73e0428"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::pair&lt; TypeCle, TypeValeur &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a07d453c76f8bf7a2b12e3196f2b9c000">successeur</a> (const TypeCle &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Retourner le successeur d'un élément dans l'arbre.  <a href="#a07d453c76f8bf7a2b12e3196f2b9c000"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">TypeValeur&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#acf100c252ece9768c37bd29ccbde077d">valeur</a> (const TypeCle &amp;p_cle) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Trouver une m_valeur à une clé donnée.  <a href="#acf100c252ece9768c37bd29ccbde077d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">TypeCle *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#ab0c58b3e03e57e4478b641f743f27cd5">cle</a> (const TypeCle &amp;p_cle) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Recherche de l'adresse d'un élément dans l'arbre.  <a href="#ab0c58b3e03e57e4478b641f743f27cd5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::pair<br class="typebreak"/>
&lt; TypeCle, TypeValeur &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#ad1c6182f8c09182e9bfdf15835e8d594">lister</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lister un arbre en en-ordre Le listage se fait dans un vector.  <a href="#ad1c6182f8c09182e9bfdf15835e8d594"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::pair<br class="typebreak"/>
&lt; TypeCle, TypeValeur &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a26ea1424bccd6268ade46542908a08b3">listerPreOrdre</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lister un arbre en pré-ordre Le listage se fait dans un vector.  <a href="#a26ea1424bccd6268ade46542908a08b3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a241741aee59c6d76dd94999df7e23a59">valider</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#abf9a465dea4c2483bbbb481674b06d08">inserer</a> (const TypeCle &amp;p_cle, const TypeValeur &amp;p_valeur)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insertion dans l'ordre de tri avec balancement.  <a href="#abf9a465dea4c2483bbbb481674b06d08"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#aade9ed9fa27f0f68559884f321b88c0c">enlever</a> (const TypeCle &amp;p_cle)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enlever un élément dans l'arbre tout en conservant le balancement.  <a href="#aade9ed9fa27f0f68559884f321b88c0c"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-methods"></a>
Fonctions membres privées</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a8df7b35e0a618276c390a5ab915b3dee">_max</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#ae21f763a75d75de6227388c03511df38">_maximum</a> (int p_premier, int p_second) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a5eb66a75b576f7063ae53d04a33765bd">_min</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#af8ceb60bde44cb14cd53cc535fd053da">_copier</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a13246d71adede360bf89f127640564b9">_detruire</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#afb89ff8a75ff88657813e00045cb0350">_trouver</a> (const TypeCle &amp;p_cle, <a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a758789870a73ce2dbf73100672134b2d">_auxAppartient</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *arbre, const TypeCle &amp;cle) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">TypeValeur&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a82fef6aaee193e7352acec0ecd614117">_valeur</a> (const TypeCle &amp;p_cle, <a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#ac061ff6f63fa2ace49f387caa8a5b742">_inserer</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_racine, const TypeCle &amp;p_cle, const TypeValeur &amp;p_valeur)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#adbc2d1c9e2807fcc0985a6783dba5c83">_enlever</a> (const TypeCle &amp;p_cle, <a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a9960ff9859c7ba222c0a0e82fb4443d3">_balancer</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a050d1d32d39742fa392c837c7da7119a">_zigZagDroit</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_noeudCritique)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a996c5f4d7bad842ee2df0e32fa7afd8c">_zigZagGauche</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_noeudCritique)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#abfd937bb5bf1ee877c408645165e7b08">_zigZigDroit</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_noeudCritique)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#aa6b83c969eb0c0e0206731f282cc21c6">_zigZigGauche</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;p_noeudCritique)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a4d857ab7521647d4946adf2de47feadf">_hauteur</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_noeud) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#aa219407ceda8db15ac639ecf5eda296f">_parent</a> (const TypeCle &amp;p_cle, <a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a4bd35cf672dbc2aa6e1d5d0a65dbca05">_succeseurParent</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *arb, <a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *sArb)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a45b43ce7413e2d63071c13f85ee2cd8b">_successeur</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *arbre, const TypeCle &amp;cle)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a9a9278a51b32c42da42aa304ff1cabb6">_visiteSymetrique</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine, std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; &amp;p_vecteur) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#af18bd01697994582337fa6fd655aeb23">_hauteurParcours</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_arbre) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#ab4dc57bfbc1f74b08f02a814cf92bdef">_auxPreOrdre</a> (<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *p_racine, std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; &amp;p_vecteur) const </td></tr>
<tr><td colspan="2"><h2><a name="pri-attribs"></a>
Attributs privés</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a97e9cff86c137044faa71c41ae84d56f">m_racine</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtp3_1_1_arbre_a_v_l.html#a82f996df4909a6e5d748b2b1cceb1420">m_cardinalite</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Description détaillée</h2>
<div class="textblock"><h3>template&lt;typename TypeCle, typename TypeValeur&gt;<br/>
class tp3::ArbreAVL&lt; TypeCle, TypeValeur &gt;</h3>

<p>classe générique représentant un arbre associatif. </p>
<p>La classe gère un arbre générique. L'implémentation se fait par chaînage. </p>
</div><hr/><h2>Documentation des constructeurs et destructeur</h2>
<a class="anchor" id="ae284e553075b6363860686f6d971b92f"></a><!-- doxytag: member="tp3::ArbreAVL::ArbreAVL" ref="ae284e553075b6363860686f6d971b92f" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructeur. </p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>Une instance de la classe <a class="el" href="classtp3_1_1_arbre_a_v_l.html" title="classe générique représentant un arbre associatif.">ArbreAVL</a> est initialisée. </dd></dl>

</div>
</div>
<a class="anchor" id="a6f63c44480520259676675af7594dd4b"></a><!-- doxytag: member="tp3::ArbreAVL::ArbreAVL" ref="a6f63c44480520259676675af7594dd4b" args="(const ArbreAVL&lt; TypeCle, TypeValeur &gt; &amp;p_source)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_source</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructeur de copie. </p>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_source</td><td>un autre arbre dont on veut obtenir une copie </td></tr>
  </table>
  </dd>
</dl>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>Il faut qu'il y ait suffisamment de mémoire </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>une copie profonde de l'arbre source est instanciée </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">bad_alloc</td><td>s'il n'y a pas assez de mémoire </td></tr>
  </table>
  </dd>
</dl>

<p><div class="dynheader">
Voici le graphe d'appel pour cette fonction :</div>
<div class="dyncontent">
<div class="center"><img src="classtp3_1_1_arbre_a_v_l_a6f63c44480520259676675af7594dd4b_cgraph.png" border="0" usemap="#classtp3_1_1_arbre_a_v_l_a6f63c44480520259676675af7594dd4b_cgraph" alt=""/></div>
<map name="classtp3_1_1_arbre_a_v_l_a6f63c44480520259676675af7594dd4b_cgraph" id="classtp3_1_1_arbre_a_v_l_a6f63c44480520259676675af7594dd4b_cgraph">
<area shape="rect" id="node3" href="classtp3_1_1_arbre_a_v_l.html#af8ceb60bde44cb14cd53cc535fd053da" title="tp3::ArbreAVL::_copier" alt="" coords="222,5,378,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="af63868c5bd825dbb76a5d7bd042b79a5"></a><!-- doxytag: member="tp3::ArbreAVL::~ArbreAVL" ref="af63868c5bd825dbb76a5d7bd042b79a5" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::~<a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destructeur. </p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>l'instance de l'arbre est détruite </dd></dl>

</div>
</div>
<hr/><h2>Documentation des fonctions membres</h2>
<a class="anchor" id="a758789870a73ce2dbf73100672134b2d"></a><!-- doxytag: member="tp3::ArbreAVL::_auxAppartient" ref="a758789870a73ce2dbf73100672134b2d" args="(Noeud *arbre, const TypeCle &amp;cle) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> * <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_auxAppartient </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_arbre</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>racine de l'arbre où un élément est recherché </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément recherché </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>ArbreAVL&lt;TypeCle, TypeValeur&gt;::Noeud* pointeur sur l'élément recherché ou 0 s'il n'existe pas </dd></dl>

</div>
</div>
<a class="anchor" id="ab4dc57bfbc1f74b08f02a814cf92bdef"></a><!-- doxytag: member="tp3::ArbreAVL::_auxPreOrdre" ref="ab4dc57bfbc1f74b08f02a814cf92bdef" args="(Noeud *p_racine, std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; &amp;p_vecteur) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_auxPreOrdre </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_arbre</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>vecteur</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>racine de l'arbre parcouru </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">vecteur</td><td>stucture de donnée où stocker les éléments </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a9960ff9859c7ba222c0a0e82fb4443d3"></a><!-- doxytag: member="tp3::ArbreAVL::_balancer" ref="a9960ff9859c7ba222c0a0e82fb4443d3" args="(Noeud *&amp;p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_balancer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_racine</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_racine</td><td>le noeud dont on veut faire un rebalancement si nécessaire </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af8ceb60bde44cb14cd53cc535fd053da"></a><!-- doxytag: member="tp3::ArbreAVL::_copier" ref="af8ceb60bde44cb14cd53cc535fd053da" args="(Noeud *p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a>* <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_copier </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_racine</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a13246d71adede360bf89f127640564b9"></a><!-- doxytag: member="tp3::ArbreAVL::_detruire" ref="a13246d71adede360bf89f127640564b9" args="(Noeud *p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_detruire </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_racine</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_racine</td><td>le noeud a partir duquel on veut demarrer la destruction </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="adbc2d1c9e2807fcc0985a6783dba5c83"></a><!-- doxytag: member="tp3::ArbreAVL::_enlever" ref="adbc2d1c9e2807fcc0985a6783dba5c83" args="(const TypeCle &amp;p_cle, Noeud *&amp;p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_enlever </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_racine</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>la cle du noeud que l'on desire retirer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_racine</td><td>la m_racine de l'arbre </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4d857ab7521647d4946adf2de47feadf"></a><!-- doxytag: member="tp3::ArbreAVL::_hauteur" ref="a4d857ab7521647d4946adf2de47feadf" args="(Noeud *p_noeud) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_hauteur </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_noeud</em></td><td>)</td>
          <td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_noeud</td><td>le noeud dont on desire obtenir la m_hauteur </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>int la m_hauteur du noeud passe en parametre </dd></dl>

</div>
</div>
<a class="anchor" id="af18bd01697994582337fa6fd655aeb23"></a><!-- doxytag: member="tp3::ArbreAVL::_hauteurParcours" ref="af18bd01697994582337fa6fd655aeb23" args="(Noeud *p_arbre) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_hauteurParcours </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_arbre</em></td><td>)</td>
          <td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>racine de l'arbre dont on veut la hauteur </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>int hauteur de l'arbre dont la m_racine est passée en paramètre </dd></dl>

</div>
</div>
<a class="anchor" id="ac061ff6f63fa2ace49f387caa8a5b742"></a><!-- doxytag: member="tp3::ArbreAVL::_inserer" ref="ac061ff6f63fa2ace49f387caa8a5b742" args="(Noeud *&amp;p_racine, const TypeCle &amp;p_cle, const TypeValeur &amp;p_valeur)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_inserer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_racine</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TypeValeur &amp;&#160;</td>
          <td class="paramname"><em>p_valeur</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_racine</td><td>m_racine de l'arbre où insérer l'élément </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément à insérer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_valeur</td><td>valeur de l'élément à insérer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8df7b35e0a618276c390a5ab915b3dee"></a><!-- doxytag: member="tp3::ArbreAVL::_max" ref="a8df7b35e0a618276c390a5ab915b3dee" args="(Noeud *p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a>* <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_max </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_racine</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ae21f763a75d75de6227388c03511df38"></a><!-- doxytag: member="tp3::ArbreAVL::_maximum" ref="ae21f763a75d75de6227388c03511df38" args="(int p_premier, int p_second) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_maximum </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>p_premier</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>p_second</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_premier</td><td>le premier nombre a comparer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_second</td><td>le second nombre a comparer </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>int le plus grand nombre passe en parametre </dd></dl>

</div>
</div>
<a class="anchor" id="a5eb66a75b576f7063ae53d04a33765bd"></a><!-- doxytag: member="tp3::ArbreAVL::_min" ref="a5eb66a75b576f7063ae53d04a33765bd" args="(Noeud *p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a>* <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_min </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_racine</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="aa219407ceda8db15ac639ecf5eda296f"></a><!-- doxytag: member="tp3::ArbreAVL::_parent" ref="aa219407ceda8db15ac639ecf5eda296f" args="(const TypeCle &amp;p_cle, Noeud *p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> * <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_parent </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_racine</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>la m_cle dont on desire obtenir des informations sur son parent </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_racine</td><td>la m_racine de l'arbre d'ou demare la recherche </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>ArbreAVL&lt;TypeCle, TypeValeur&gt;::Noeud * le noeud parent du noeud dont la m_cle est passe en parametreb </dd></dl>

</div>
</div>
<a class="anchor" id="a4bd35cf672dbc2aa6e1d5d0a65dbca05"></a><!-- doxytag: member="tp3::ArbreAVL::_succeseurParent" ref="a4bd35cf672dbc2aa6e1d5d0a65dbca05" args="(Noeud *arb, Noeud *sArb)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> * <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_succeseurParent </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_arbre</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_sArb</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>racine de l'arbre où l'on cherche </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_sArb</td><td>élément dont on cherche le parent </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>ArbreAVL&lt;TypeCle, TypeValeur&gt;::Noeud parent de l'élément </dd></dl>

</div>
</div>
<a class="anchor" id="a45b43ce7413e2d63071c13f85ee2cd8b"></a><!-- doxytag: member="tp3::ArbreAVL::_successeur" ref="a45b43ce7413e2d63071c13f85ee2cd8b" args="(Noeud *arbre, const TypeCle &amp;cle)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> * <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_successeur </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_arbre</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>racine de l'arbre où l'on cherche le successeur </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément dont on cherche le successeur </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="afb89ff8a75ff88657813e00045cb0350"></a><!-- doxytag: member="tp3::ArbreAVL::_trouver" ref="afb89ff8a75ff88657813e00045cb0350" args="(const TypeCle &amp;p_cle, Noeud *&amp;p_racine)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a>* <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_trouver </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_racine</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a82fef6aaee193e7352acec0ecd614117"></a><!-- doxytag: member="tp3::ArbreAVL::_valeur" ref="a82fef6aaee193e7352acec0ecd614117" args="(const TypeCle &amp;p_cle, Noeud *p_racine) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">TypeValeur <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_valeur </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_arbre</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément dont on désire la valeur </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>racine de l'arbre où l'on effectue la recherche </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>TypeValeur valeur de l'élément recherché </dd></dl>

</div>
</div>
<a class="anchor" id="a9a9278a51b32c42da42aa304ff1cabb6"></a><!-- doxytag: member="tp3::ArbreAVL::_visiteSymetrique" ref="a9a9278a51b32c42da42aa304ff1cabb6" args="(Noeud *p_racine, std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; &amp;p_vecteur) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_visiteSymetrique </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&#160;</td>
          <td class="paramname"><em>p_racine</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>vecteur</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_racine</td><td>la m_racine de l'arbre </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">vecteur</td><td>un vecteur ou l'on stocke les couples m_cle m_valeur en ordre </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a050d1d32d39742fa392c837c7da7119a"></a><!-- doxytag: member="tp3::ArbreAVL::_zigZagDroit" ref="a050d1d32d39742fa392c837c7da7119a" args="(Noeud *&amp;p_noeudCritique)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_zigZagDroit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_noeudCritique</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_noeudCritique</td><td>le noeud critique qu'il faut deplacer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a996c5f4d7bad842ee2df0e32fa7afd8c"></a><!-- doxytag: member="tp3::ArbreAVL::_zigZagGauche" ref="a996c5f4d7bad842ee2df0e32fa7afd8c" args="(Noeud *&amp;p_noeudCritique)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_zigZagGauche </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_noeudCritique</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_noeudCritique</td><td>le noeud critique qu'il faut deplacer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abfd937bb5bf1ee877c408645165e7b08"></a><!-- doxytag: member="tp3::ArbreAVL::_zigZigDroit" ref="abfd937bb5bf1ee877c408645165e7b08" args="(Noeud *&amp;p_noeudCritique)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_zigZigDroit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_noeudCritique</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_noeudCritique</td><td>le noeud critique qu'il faut deplacer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa6b83c969eb0c0e0206731f282cc21c6"></a><!-- doxytag: member="tp3::ArbreAVL::_zigZigGauche" ref="aa6b83c969eb0c0e0206731f282cc21c6" args="(Noeud *&amp;p_noeudCritique)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::_zigZigGauche </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a> *&amp;&#160;</td>
          <td class="paramname"><em>p_noeudCritique</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_noeudCritique</td><td>le noeud critique qu'il faut deplacer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a411ad2ea79b5437c5604ddb38ffefa23"></a><!-- doxytag: member="tp3::ArbreAVL::appartient" ref="a411ad2ea79b5437c5604ddb38ffefa23" args="(const TypeCle &amp;) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::appartient </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Vérifier si un élément est dans l'arbre. </p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément recherché </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>bool VRAI si l'élément est présent, FAUX sinon </dd></dl>

</div>
</div>
<a class="anchor" id="ab0c58b3e03e57e4478b641f743f27cd5"></a><!-- doxytag: member="tp3::ArbreAVL::cle" ref="ab0c58b3e03e57e4478b641f743f27cd5" args="(const TypeCle &amp;p_cle) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">TypeCle * <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::cle </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recherche de l'adresse d'un élément dans l'arbre. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>L'élément doit exister </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'adresse de l'élément est retournee </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">logic_error</td><td>si l'élément n'est pas dans l'arbre </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>La clé de l'élément recherché </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>Retourne la clé de l'élément recherché </dd></dl>

</div>
</div>
<a class="anchor" id="aade9ed9fa27f0f68559884f321b88c0c"></a><!-- doxytag: member="tp3::ArbreAVL::enlever" ref="aade9ed9fa27f0f68559884f321b88c0c" args="(const TypeCle &amp;p_cle)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::enlever </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enlever un élément dans l'arbre tout en conservant le balancement. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">logic_error</td><td>dans quels cas ? </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>la cle du noeud que l'on desire retirer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af606b3bae77f6b93138cba8e01be06d2"></a><!-- doxytag: member="tp3::ArbreAVL::estVide" ref="af606b3bae77f6b93138cba8e01be06d2" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::estVide </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Vérifier si l'arbre est vide. </p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>bool VRAI si vide, FAUX sinon </dd></dl>

</div>
</div>
<a class="anchor" id="a665bab623b63e45d2aa27ce8db2ac616"></a><!-- doxytag: member="tp3::ArbreAVL::hauteur" ref="a665bab623b63e45d2aa27ce8db2ac616" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::hauteur </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retourner la m_hauteur de l'arbre La détermination de la m_hauteur se fait par parcours de l'arbre. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>L'arbre n'est pas vide </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">logic_error</td><td>si l'arbre est vide </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>int la m_hauteur de l'arbre </dd></dl>

</div>
</div>
<a class="anchor" id="abf9a465dea4c2483bbbb481674b06d08"></a><!-- doxytag: member="tp3::ArbreAVL::inserer" ref="abf9a465dea4c2483bbbb481674b06d08" args="(const TypeCle &amp;p_cle, const TypeValeur &amp;p_valeur)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::inserer </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TypeValeur &amp;&#160;</td>
          <td class="paramname"><em>p_valeur</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insertion dans l'ordre de tri avec balancement. </p>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément à insérer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_valeur</td><td>valeur de l'élément à insérer </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">bad_alloc</td><td></td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad1c6182f8c09182e9bfdf15835e8d594"></a><!-- doxytag: member="tp3::ArbreAVL::lister" ref="ad1c6182f8c09182e9bfdf15835e8d594" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::lister </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lister un arbre en en-ordre Le listage se fait dans un vector. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>Il y a assez de mémoire </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">bad_alloc</td><td>s'il n'y a pas assez de mémoire </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>std::vector&lt;std::pair&lt;TypeCle, TypeValeur&gt; &gt;, les couples cle valeur dans un vecteur liste en ordre </dd></dl>

</div>
</div>
<a class="anchor" id="a26ea1424bccd6268ade46542908a08b3"></a><!-- doxytag: member="tp3::ArbreAVL::listerPreOrdre" ref="a26ea1424bccd6268ade46542908a08b3" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::pair&lt; TypeCle, TypeValeur &gt; &gt; <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::listerPreOrdre </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lister un arbre en pré-ordre Le listage se fait dans un vector. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>Il y a assez de mémoire </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">bad_alloc</td><td>s'il n'y a pas assez de mémoire </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>std::vector&lt;std::pair&lt;TypeCle, TypeValeur&gt; &gt; vecteur des éléments parcourus en pré-ordre </dd></dl>

</div>
</div>
<a class="anchor" id="a32cd81896cc87f264fb6afa6e1c419a1"></a><!-- doxytag: member="tp3::ArbreAVL::operator=" ref="a32cd81896cc87f264fb6afa6e1c419a1" args="(const ArbreAVL&lt; TypeCle, TypeValeur &gt; &amp;p_arbre)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp; <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_arbre</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Surcharger l'opérateur =. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>Il y a assez de mémoire pour l'opération </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>Une copie profonde de l'arbre a est créée </dd>
<dd>
Une référence sur l'élément courant est retournée. </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">bad_alloc</td><td>si la mémoire est insuffisante </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>une reference constante sur l'arbre que l'on desire copier </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af51d214bf237296f7bbc63c350043e7f"></a><!-- doxytag: member="tp3::ArbreAVL::operator==" ref="af51d214bf237296f7bbc63c350043e7f" args="(const ArbreAVL&lt; TypeCle, TypeValeur &gt; &amp;p_arbre) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::operator== </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>&lt; TypeCle, TypeValeur &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_arbre</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Surcharger l'opérateur ==. </p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>Les 2 opérandes (arbres) sont inchangés </dd></dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_arbre</td><td>arbre avec lequel est effectué la comparaison </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>bool VRAI si identique, FAUX sinon </dd></dl>

<p><div class="dynheader">
Voici le graphe d'appel pour cette fonction :</div>
<div class="dyncontent">
<div class="center"><img src="classtp3_1_1_arbre_a_v_l_af51d214bf237296f7bbc63c350043e7f_cgraph.png" border="0" usemap="#classtp3_1_1_arbre_a_v_l_af51d214bf237296f7bbc63c350043e7f_cgraph" alt=""/></div>
<map name="classtp3_1_1_arbre_a_v_l_af51d214bf237296f7bbc63c350043e7f_cgraph" id="classtp3_1_1_arbre_a_v_l_af51d214bf237296f7bbc63c350043e7f_cgraph">
<area shape="rect" id="node3" href="classtp3_1_1_arbre_a_v_l.html#ad1c6182f8c09182e9bfdf15835e8d594" title="Lister un arbre en en&#45;ordre Le listage se fait dans un vector." alt="" coords="235,5,378,32"/><area shape="rect" id="node5" href="classtp3_1_1_arbre_a_v_l.html#a50dccae66eff74985f0be2a0345420c7" title="Retourner le nombre d&#39;éléments dans l&#39;arbre." alt="" coords="236,56,377,83"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="af19c791ce8a8504986f05cdee73e0428"></a><!-- doxytag: member="tp3::ArbreAVL::parent" ref="af19c791ce8a8504986f05cdee73e0428" args="(const TypeCle &amp;)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt; TypeCle, TypeValeur &gt; <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::parent </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retourner le parent d'un élément dans l'arbre. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>L'arbre n'est pas vide </dd>
<dd>
L'élément fait partie de l'arbre </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">logic_error</td><td>si l'arbre est vide </td></tr>
    <tr><td class="paramname">logic_error</td><td>si l'élément n'est pas dans l'arbre </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>la cle de l'element dont on desire obtenir les valeurs de son parent </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>std::pair&lt;TypeCle, TypeValeur&gt; la cle et la valeur du parent de l'element dont la m_cle est passe en parametre </dd></dl>

</div>
</div>
<a class="anchor" id="a07d453c76f8bf7a2b12e3196f2b9c000"></a><!-- doxytag: member="tp3::ArbreAVL::successeur" ref="a07d453c76f8bf7a2b12e3196f2b9c000" args="(const TypeCle &amp;)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt; TypeCle, TypeValeur &gt; <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::successeur </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retourner le successeur d'un élément dans l'arbre. </p>
<dl class="pre"><dt><b>Précondition:</b></dt><dd>L'arbre n'est pas vide </dd>
<dd>
L'élément fait partie de l'arbre </dd>
<dd>
L'élément n'est pas le maximum dans l'arbre </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">logic_error</td><td>si l'arbre est vide </td></tr>
    <tr><td class="paramname">logic_error</td><td>si l'élément n'est pas dans l'arbre </td></tr>
    <tr><td class="paramname">logic_error</td><td>si l'élément est le maximum dans l'arbre </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément dont on veut le successeur </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>std::pair&lt;TypeCle, TypeValeur&gt; le successeur selon la p_cle </dd></dl>

</div>
</div>
<a class="anchor" id="a50dccae66eff74985f0be2a0345420c7"></a><!-- doxytag: member="tp3::ArbreAVL::taille" ref="a50dccae66eff74985f0be2a0345420c7" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">long <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::taille </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retourner le nombre d'éléments dans l'arbre. </p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>L'arbre est inchangé </dd></dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>long le nombre d'elements dans l'arbre </dd></dl>

</div>
</div>
<a class="anchor" id="acf100c252ece9768c37bd29ccbde077d"></a><!-- doxytag: member="tp3::ArbreAVL::valeur" ref="acf100c252ece9768c37bd29ccbde077d" args="(const TypeCle &amp;p_cle) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">TypeValeur <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::valeur </td>
          <td>(</td>
          <td class="paramtype">const TypeCle &amp;&#160;</td>
          <td class="paramname"><em>p_cle</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Trouver une m_valeur à une clé donnée. </p>
<dl><dt><b>Paramètres:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_cle</td><td>clef de l'élément dont on veut la m_valeur </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Renvoie:</b></dt><dd>TypeValeur m_valeur de l'élément recherché </dd></dl>

</div>
</div>
<a class="anchor" id="a241741aee59c6d76dd94999df7e23a59"></a><!-- doxytag: member="tp3::ArbreAVL::valider" ref="a241741aee59c6d76dd94999df7e23a59" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle , typename TypeValeur &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::valider </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Documentation des données membres</h2>
<a class="anchor" id="a82f996df4909a6e5d748b2b1cceb1420"></a><!-- doxytag: member="tp3::ArbreAVL::m_cardinalite" ref="a82f996df4909a6e5d748b2b1cceb1420" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">long <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l.html#a82f996df4909a6e5d748b2b1cceb1420">m_cardinalite</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Nombre de noeuds dans l'arbre </p>

</div>
</div>
<a class="anchor" id="a97e9cff86c137044faa71c41ae84d56f"></a><!-- doxytag: member="tp3::ArbreAVL::m_racine" ref="a97e9cff86c137044faa71c41ae84d56f" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeCle, typename TypeValeur&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtp3_1_1_arbre_a_v_l_1_1_noeud.html">Noeud</a>* <a class="el" href="classtp3_1_1_arbre_a_v_l.html">tp3::ArbreAVL</a>&lt; TypeCle, TypeValeur &gt;::<a class="el" href="classtp3_1_1_arbre_a_v_l.html#a97e9cff86c137044faa71c41ae84d56f">m_racine</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>La m_racine de l'arbre </p>

</div>
</div>
<hr/>La documentation de cette classe a été générée à partir des fichiers suivants :<ul>
<li><a class="el" href="_arbre_a_v_l_8h.html">ArbreAVL.h</a></li>
<li><a class="el" href="_arbre_a_v_l_8hpp.html">ArbreAVL.hpp</a></li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespacetp3.html">tp3</a>      </li>
      <li class="navelem"><a class="el" href="classtp3_1_1_arbre_a_v_l.html">ArbreAVL</a>      </li>
      <li class="footer">Généré le Sat Nov 30 2013 12:55:22 pour Annuaire genealogique associatif par&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li>
    </ul>
  </div>

</body>
</html>
